package com.inei.evaluaciondelaencuesta.model.dao;

import java.util.ArrayList;
import java.util.List;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import com.inei.evaluaciondelaencuesta.model.entity.MarcoEncuesta;
import com.inei.evaluaciondelaencuesta.model.connection.UtilDB;

public class MarcoEncuestaDao implements ICRUD<MarcoEncuesta> {

	// variables
	private UtilDB util;
	private SQLiteDatabase db;
	private Cursor cursor = null;
	private Context context;

	public MarcoEncuestaDao(Context context) {
		this.context = context;
		util = new UtilDB(context);
	}

	@Override
	public MarcoEncuesta buscar(MarcoEncuesta o) {
		MarcoEncuesta obj = null;
		db = util.getReadableDatabase();
		cursor = db.rawQuery("select * from MarcoEncuesta where marco_id=?",
				new String[] { o.getMarco_id() + "" });
		if (cursor.moveToFirst()) {
			obj = new MarcoEncuesta();
			obj.setMarco_id(cursor.getInt(cursor.getColumnIndex("marco_id")));
			obj.setCcdd(cursor.getString(cursor.getColumnIndex("ccdd")));
			obj.setNom_dpto(cursor.getString(cursor.getColumnIndex("nom_dpto")));
			obj.setCcpp(cursor.getString(cursor.getColumnIndex("ccpp")));
			obj.setNom_prov(cursor.getString(cursor.getColumnIndex("nom_prov")));
			obj.setCcdi(cursor.getString(cursor.getColumnIndex("ccdi")));
			obj.setNom_dist(cursor.getString(cursor.getColumnIndex("nom_dist")));
			obj.setConglomerado(cursor.getString(cursor
					.getColumnIndex("conglomerado")));
			obj.setGrupo(cursor.getString(cursor.getColumnIndex("grupo")));
			obj.setVivienda(cursor.getString(cursor.getColumnIndex("vivienda")));
			obj.setObs_dni(cursor.getString(cursor.getColumnIndex("obs_dni")));
			obj.setObs_ap(cursor.getString(cursor.getColumnIndex("obs_ap")));
			obj.setObs_am(cursor.getString(cursor.getColumnIndex("obs_am")));
			obj.setObs_n(cursor.getString(cursor.getColumnIndex("obs_n")));
			obj.setEnc_dni(cursor.getString(cursor.getColumnIndex("enc_dni")));
			obj.setEnc_ap(cursor.getString(cursor.getColumnIndex("enc_ap")));
			obj.setEnc_am(cursor.getString(cursor.getColumnIndex("enc_am")));
			obj.setEnc_n(cursor.getString(cursor.getColumnIndex("enc_n")));
			obj.setFecha(cursor.getString(cursor.getColumnIndex("fecha")));
		}
		Cerrar();
		return obj;
	}

	@Override
	public List<MarcoEncuesta> leer() {
		List<MarcoEncuesta> lista = null;
		db = util.getReadableDatabase();
		cursor = db.rawQuery("select * from MarcoEncuesta", null);
		if (cursor.moveToFirst()) {
			lista = new ArrayList<MarcoEncuesta>();
			while (!cursor.isAfterLast()) {
				MarcoEncuesta obj = new MarcoEncuesta();
				obj.setMarco_id(cursor.getInt(cursor.getColumnIndex("marco_id")));
				obj.setCcdd(cursor.getString(cursor.getColumnIndex("ccdd")));
				obj.setNom_dpto(cursor.getString(cursor
						.getColumnIndex("nom_dpto")));
				obj.setCcpp(cursor.getString(cursor.getColumnIndex("ccpp")));
				obj.setNom_prov(cursor.getString(cursor
						.getColumnIndex("nom_prov")));
				obj.setCcdi(cursor.getString(cursor.getColumnIndex("ccdi")));
				obj.setNom_dist(cursor.getString(cursor
						.getColumnIndex("nom_dist")));
				obj.setConglomerado(cursor.getString(cursor
						.getColumnIndex("conglomerado")));
				obj.setGrupo(cursor.getString(cursor.getColumnIndex("grupo")));
				obj.setVivienda(cursor.getString(cursor
						.getColumnIndex("vivienda")));
				obj.setObs_dni(cursor.getString(cursor
						.getColumnIndex("obs_dni")));
				obj.setObs_ap(cursor.getString(cursor.getColumnIndex("obs_ap")));
				obj.setObs_am(cursor.getString(cursor.getColumnIndex("obs_am")));
				obj.setObs_n(cursor.getString(cursor.getColumnIndex("obs_n")));
				obj.setEnc_dni(cursor.getString(cursor
						.getColumnIndex("enc_dni")));
				obj.setEnc_ap(cursor.getString(cursor.getColumnIndex("enc_ap")));
				obj.setEnc_am(cursor.getString(cursor.getColumnIndex("enc_am")));
				obj.setEnc_n(cursor.getString(cursor.getColumnIndex("enc_n")));
				obj.setFecha(cursor.getString(cursor.getColumnIndex("fecha")));
				lista.add(obj);
				cursor.moveToNext();
			}
		}
		Cerrar();
		return lista;
	}

	@Override
	public int crear(MarcoEncuesta o) {
		int resultado = 0;
		db = util.getWritableDatabase();
		db.beginTransaction();
		ContentValues valores = new ContentValues();
		valores.put("ccdd", o.getCcdd());
		valores.put("nom_dpto", o.getNom_dpto());
		valores.put("ccpp", o.getCcpp());
		valores.put("nom_prov", o.getNom_prov());
		valores.put("ccdi", o.getCcdi());
		valores.put("nom_dist", o.getNom_dist());
		valores.put("conglomerado", o.getConglomerado());
		valores.put("grupo", o.getGrupo());
		valores.put("vivienda", o.getVivienda());

		resultado = (int) db.insert("MarcoEncuesta", null, valores);
		if (resultado > 0) {
			db.setTransactionSuccessful();
		}
		valores.clear();
		Cerrar();
		return resultado;
	}

	@Override
	public int eliminar(MarcoEncuesta o) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public int actualizar(MarcoEncuesta o) {
		int resultado = 0;
		db = util.getWritableDatabase();
		db.beginTransaction();
		ContentValues valores = new ContentValues();
		valores.put("ccdd", o.getCcdd());
		valores.put("nom_dpto", o.getNom_dpto());
		valores.put("ccpp", o.getCcpp());
		valores.put("nom_prov", o.getNom_prov());
		valores.put("ccdi", o.getCcdi());
		valores.put("nom_dist", o.getNom_dist());
		valores.put("conglomerado", o.getConglomerado());
		valores.put("grupo", o.getGrupo());
		valores.put("vivienda", o.getVivienda());
		valores.put("obs_dni", o.getObs_dni());
		valores.put("obs_ap", o.getObs_ap());
		valores.put("obs_am", o.getObs_am());
		valores.put("obs_n", o.getObs_n());
		valores.put("enc_dni", o.getEnc_dni());
		valores.put("enc_ap", o.getEnc_ap());
		valores.put("enc_am", o.getEnc_am());
		valores.put("enc_n", o.getEnc_n());
		valores.put("fecha", o.getFecha());

		resultado = (int) db.update("MarcoEncuesta", valores, "marco_id=?",
				new String[] { o.getMarco_id() + "" });
		if (resultado > 0) {
			db.setTransactionSuccessful();
		}
		valores.clear();
		Cerrar();
		return resultado;
	}

	private void Cerrar() {
		if (cursor != null) {
			cursor.close();
		}
		if (db.inTransaction()) {
			db.endTransaction();
		}
		db.close();
	}
}
